iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
2
自我挑戰組

iOS 筆記系列 第 4

Debug、Release Mode

  • 分享至 

  • xImage
  •  

有時有些程式我們只想要它們在 Release Mode 上執行,最明顯的例子就是分析工具,我們不想要在開發的時候一直讓分析工具記錄我們的操作,這篇就來講如何讓某些程式只在 Debug Mode 執行,有些只在 Release Mode 上執行。

操作環境:
Xcode 8.1 (8B62)
iOS 10.1 (14B72)

Objective-C

只要加上這幾行判別式就可以了。

#ifdef DEBUG
    // 只在開發時執行的程式
#else
    // 只要發布版 App 執行的程式
#endif

如果想要寫成這樣

#ifdef RELEASE

#else

#endif

只要在 Project Build Setting 裡的「Preprocessor Macros」這個項目的 Release 欄位補上 RELEASE=1 就完成了。
http://ithelp.ithome.com.tw/upload/images/20161204/2010356139TUYHSqs6.png
其實欄位裡面要填什麼字是我們可以自己決定的,只是都大寫是大家寫這種常數的慣例而已。

如果你想要切換到 Release Mode 測試,可以去編輯 Scheme,修改 Build Configuration。
http://ithelp.ithome.com.tw/upload/images/20161204/20103561dZa3uhTdZu.png
http://ithelp.ithome.com.tw/upload/images/20161204/20103561tu7MuT8puX.png

這裡使用的 #ifdef 語言是繼承自 C 語言的 Preprocessor,你會注意到當你在 Debug Mode 時,Release Mode 裡的程式高亮不會顯示,因為他們根本沒有被編譯,所以不用緊張。

Swift

在 swift 裡面也是一樣,只是語法稍微不同,專案建立時就可以使用:

#if DEBUG
    print("debug")
#else
    print("release")
#endif

如果想要寫成這樣:

#if RELEASE
    print("debug")
#else
    print("release")
#endif

按下面的步驟操作完成就可以了

  1. Project
  2. Build Setting
  3. Active Compilation Conditions
  4. 在 Release 欄位填上 RELEASE

網路上很多文章都叫人到「Other Swift Flags」這個欄位分別填上-DDEBUG、-DRELEASE,我覺得這不需要。

我不知道是因為他們互相抄襲還是從哪裡得來的資訊,因為很明顯在 Active Compilation Conditions 裡的 Debug 欄位上就已經預先填好了 DEBUG,這就是我們要的設定,再看這兩個欄位的解釋:

SWIFT_ACTIVE_COMPILATION_CONDITIONS:A list of compilation conditions to enable for conditional compilation expressions.
OTHER_SWIFT_FLAGS:A list of additional flags to pass to the Swift compiler.

前者應該才是我們要的,後者他們應該是用某個語法達到相同的效果。


上一篇
如何使用 nib 檔案初始化 UIViewController
下一篇
frame、bounds 的差別 part 1
系列文
iOS 筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言